package com.tyl.lock8;

import java.util.concurrent.TimeUnit;

public class Test04 {
    /***
     * 7、一个静态同步方法，一个普通同步方法，一个对象，先打印发短信还是打电话？ 先打电话再发短信，
     * 8、一个静态同步方法，一个普通同步方法，二个对象，先打印发短信还是打电话？ 先打电话再发短信，
     * */
    public static void main(String[] args) {
        // 两个对象的class模板只有一个，static，锁的是class
        Phone4 phone=new Phone4();
        Phone4 phone2=new Phone4();
        new Thread(()->{
            phone.sendSms();
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
        new Thread(()->{
            phone2.call();
        }).start();
    }
}

//Phone是唯一的一个class对象
class  Phone4{
    //静态的同步方法，锁的是Class模板
    public static  synchronized  void sendSms(){
        //捕获
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("发短信");
    }
    //普通同步方法，锁的调用者
    public  synchronized void call(){
        System.out.println("打电话");
    }
}
